查看原文
其他

复旦NLP团队提出全新大模型智能体强化学习范式,大幅提升智能体推理与代码能力

让你更懂AI的 PaperWeekly
2024-08-22


引言

去年下半年,复旦 NLP 团队推出了基于大语言模型的智能体综述《The Rise and Potential of Large Language Model Based Agents: A Survey》,取得了广泛的影响力,被国内外多家知名媒体报道,据谷歌学术统计引用量已经超过 170 次。这也说明,基于大模型的智能体是大模型时代最火热的研究方向之一。
研究者们通过为大模型添加感知、规划、行动和记忆等模块,构建自主智能体,使其能够完成一系列复杂的任务,取得了强悍的性能。然而,目前的工作主要基于提示(Prompt)的方式来引导模型进行操作,并没有真正对模型进行训练与优化。

另外一种基于监督学习的范式则主要通过灌输训练数据,让智能体进行模仿学习。在这种情况下,为了精进某一项任务,需要花费大量的成本让高技巧的标注人员去进行标注,或是搭建专供智能体进行训练的测试环境,导致这种方式难以扩展到更大规模。另外,这种方式主要通过构建示例数据,灌输给智能体,是一种被动的训练方式,缺少模型自己的探索。

为了构建一种低成本的、可扩展的、探索式的训练范式,复旦 NLP 团队提出了全新的基于强化学习的大模型智能体训练范式,并在推理任务、数学解题、代码生成等任务上进行了验证


R3:基于逆课程强化学习的大模型推理训练框架

论文链接:

https://arxiv.org/abs/2402.05808

代码链接:

https://github.com/WooooDyy/LLM-Reverse-Curriculum-RL

2.1 引文

▲ 图1:R3,基于逆课程强化学习的大模型推理训练框架

强化学习通过将探索与学习结合,提供了一种自动化的、低标注成本的训练范式。在大模型领域,强化学习这一技术已经在 RLHF 等任务中表现了强大的能力。将强化学习应用到大模型训练时,关键在于识别出一条能带来正向回报的行为轨迹,提供适当的监督信号并优化该智能体

一方面,随着复杂任务(例如逻辑推理、数学解题)难度的增加,推理链的复杂性和长度也在增加。智能体需要面临多个中间步骤的错误和不确定性的积累。推理步骤的增加导致推理的潜在搜索空间呈指数增长,使得模型获得正确的最终结果变得非常困难。

另一方面,现有的监督方法需要在反馈质量和注释成本之间进行权衡。目前,存在两种主流的监督策略:结果监督(Outcome Supervision)和过程监督(Process Supervision)。

其中,结果监督只奖励最终结果,但奖励比较稀疏,使得模型很难确定哪些行动导致了最终的成功或失败。而过程监督在每一步推理步骤上都提供详细的反馈,使模型的优化过程更加精确,但这种方法需要高技能的注释者来选择更好的推理路径,大大增加了成本。

为了应对这一挑战,复旦团队创新性地提出了基于逆课程强化学习(R3, Reasoning through Reverse curriculum Reinforcement learning)的大模型训练范式,它结合了过程监督和结果监督的优点,同时克服了它们各自的缺陷。R3 仅需要使用结果监督的信号来模拟过程监督的效果。

如图 1 所示,以一个需要四步推理步骤的数学问题为例。如果我们给智能体提供前三个步骤作为提示,然后从这一点开始展开(roll out),它就可以仅使用结果监督来获得最终步骤的监督信号。通过逐步向前移动起始点并让模型展开,我们就可以监督更多的步骤。这种策略使我们能够以近似逐步的方式向模型提供监督信号,从而实现了逆课程强化学习。

文章的主要贡献如下:

1. 提出全新的大模型推理训练范式 R3:该方法通过基于逆课程的强化学习,采用结果监督来实现类似于过程监督的效果,从而增强大语言模型的推理能力。R3 从正确的示范中进行学习,并逐渐将推理的起始状态从示范的末端滑动到起始端,为模型提供了难度逐步递进的逆向课程,使结果监督能够提供逐步的信号并准确地指出错误。

2. 全面充分的实验验证:复旦团队在数学推理(GSM8K,SVAMP)、逻辑推理(BGQA)、阅读理解(rae@High,race@Middle)等八个推理任务上进行了广泛的实验,以突出 R3 方法的有效性。R3 与 SFT 方法相比平均提升 5.4%,与经典的 RL 方法相比平均提升 4.1%。在基于 PoT(Program-of-Thought)的推理任务中,R3 在三个骨干模型上的得分都显著超过基线方法,展示了其在解决数学问题方面的优越性。

2.2 R3方法介绍

R3 是一种全新的大模型推理训练框架,专为提升 LLMs 在复杂推理任务上的表现而设计。该方法巧妙地结合了结果监督的简洁性和过程监督的指导性,通过逆向课程学习(Reverse Curriculum Learning)的方式,实现了对模型推理过程的精细调控,避免了传统监督方式的局限性。

从推理路径的中间状态开始探索:

在 R3 框架中,模型不是从零开始探索,而是从一个已知的正确状态(即一条正确推理路径的中间位置)开始,由结果监督提供最终结果的反馈,作为行动的监督信号。这种策略使得模型能够更容易地获得正向奖励,因为它已经从中间状态中学习到了大部分正确的推理路径。

▲ 图2:不同起始点的模型探索难度。其中左图为对应数据集的训练集,右图为测试集

为了验证这一观点,作者进行了如图 2 所示的预实验。该实验展示了模型在不同难度的起始点进行探索时,获取正向奖励的难易程度。图中的横轴代表了探索的起始点占完整推理路径的百分比。

结果表明,当模型从接近最终状态的位置开始推理时,更容易获得正向奖励。这一实验结果支持了 R3 方法的核心思路:通过从路径的中间状态开始探索,模型可以更容易地学习到正确的推理路径,从而提高整体的推理性能。

构建逆向课程:

一旦模型逐渐适应并掌握从较近的起始状态开始探索,这种策略就可以扩展到更加远离目标的状态,以利用已经习得的知识。R3 逐步增加探索的难度,不断向后推移起始状态(即逆向课程),最终使模型能够在没有任何额外提示的情况下,达到更优秀的推理性能。

在 R3 的训练框架下,模型在每个阶段都面临一个相对简单的探索问题。因为在先前的学习中,它已经学会了剩余部分的推理过程。

混合起始状态以提高泛化能力:

为了避免模型在课程的早期阶段过度拟合简单模式,导致在难度增加时泛化能力下降,作者借鉴了多任务学习的策略。图 3 展示了在 GSM8K 推理任务中,随着探索难度逐步增加,R3 方法和传统的阶段性强化学习(Staged RL)在训练过程中的性能变化。

R3 方法在各个难度级别上都能稳定地提升性能,而 Staged RL 在过渡到更高难度阶段时可能会出现性能下降。这表明 R3 方法在处理复杂推理任务时,能够更好地适应不同难度的挑战,保持稳定的学习进度。

▲ 图3:Staged RL 和 R3 在 5 个不同难度的 GSM8K 测试集上的性能曲线

R3 采用近端策略优化(PPO)作为基本的策略梯度算法。形式化的来说,可以将训练数据中间状态的集合定义为 ,并让策略函数 从接近目标状态的中间状态 开始探索,即 

同时使用一个基于结果的奖励函数 来提供反馈,作为模型在环境状态 之后采取行动的监督信号。在这种优化范式中,环境状态 之前的行为轨迹 可以作为策略函数的一种指导形式,使模型更容易获得积极的奖励,避免陷入无方向、低效率的探索过程。需要优化的策略梯度可以表示为:

2.3 R3实验细节

主实验:

在 CoT(Chain of Thought)推理任务中,R3 方法展现了其卓越的性能。在多个推理任务(数学推理、逻辑推理、阅读理解等)上,R3 不仅在准确率上显著超越了 SFT 方法,并且与经典的 RL 方法相比平均提升 4.1%。

这表明 R3 能够有效地帮助模型应对复杂推理链的挑战,更好地积累和利用知识,从而提高推理的准确性和可靠性。
▲ 图4:CoT 任务实验结果

在 P-CoT(Program of Thought)推理任务中,R3 同样表现出色。作者在 GSM8K 数学问题求解任务上进行了实验,R3 不仅在所有三个骨干模型上都超过了基线方法,而且在没有额外数据的情况下,以 Codellama-7B 作为骨干模型的性能可以与更大或闭源的模型相当。

这一结果证明了 R3 方法在数学、程序推理任务中的有效性,以及其在提升模型解决实际问题能力方面的潜力。

▲ 图5:P-CoT 任务实验结果(GSM8K)


实验1:更加稳定的强化学习训练过程

在实验 1 中,作者深入探讨了 R3 方法在强化学习过程中的稳定性(图6)。通过对比 R3 与传统强化学习(RL)在 GSM8K 推理任务上的训练曲线,作者发现 R3 在训练过程中展现出了显著的稳定性优势。

这种稳定性不仅体现在训练奖励上,也反映在了模型的测试性能上。这些结果强调了 R3 在强化学习领域的潜力,特别是在一些需要模型做出连续决策的复杂场景。

▲ 图6:在 GSM8K CoT 任务上,RL 和 R3 的训练曲线(左:平均训练奖励,中:平均训练回报,右:准确率)

实验2:基于难度的奖励函数设计

在实验 2 中,作者探索了基于难度的奖励函数设计对 R3 方法性能的影响。这一创新的设计考虑了模型在不同难度级别上探索时,奖励与挑战难度的不一致性。

作者首先定义了不同起始状态下任务的难度。例如,如果一个任务的推理链长度是 那么从第 步开始的推理任务的难度可以定义为

此后,作者针对性地设计了几种不同的奖励函数,这些函数根据任务的难度来调整奖励的大小。例如,线性奖励函数 ,平方奖励函数 ,平方根奖励函数 ,以及折扣奖励函数 ,其中
▲ 图7:模型在不同奖励函数下的性能表现

实验结果如图 7 所示,作者意外地发现这些修改后的奖励函数并没有带来实质的性能提升,反而导致性能下降。这也许意味着我们应该公平地对待每一个起始状态。


StepCoder:利用基于编译器反馈的强化学习提升大语言模型代码生成能力

论文链接:

https://arxiv.org/abs/2402.01391

数据集链接:

https://github.com/Ablustrund/APPS_Plus

3.1 使用强化学习提升大语言模型的代码生成能力时面临的两个挑战

代码生成对于 LLM 也是重要的任务,有望助力于 agent,reasoning,planing 等任务。然而,通过 RL 进行代码生成面临两个挑战。

首先,人类需求的日益复杂通常会导致需要生成更长的代码序列,比如条件语句数量的大量增加,这使得模型的探索变得困难;同时代码生成任务通常用单元测试作为反馈,这只有代码完全生成并执行后才能获得奖励。因此,在具有复杂序列和稀疏奖励的任务中探索高回报轨迹对策略模型的优化是一项重大挑战。

其次,在代码生成中,奖励取决于单元测试样本的正确性,这仅与执行到的代码片段相关。例如,如下图所示,当函数的输入是 1\n10 12 1 5 3\n 时,只会执行绿色虚线框里的代码。这表明生成序列中的一些动作与奖励无关,因此在单元测试未能覆盖复杂代码的情况下,可能会出现与奖励无关的未执行的代码片段,导致基于整个代码序列的优化的不精确。

3.2 缓解RL探索问题和细粒度优化的代码生成训练范式

StepCoder 是一种全新的通过强化学习增强代码生成的训练范式。该方法解决了代码生成任务中复杂的探索问题面临的多项挑战,将复杂的探索问题进行分解,以降低在奖励稀疏的环境中探索的难度,同时提供了细粒度的优化。


代码完成子任务(CCCS) 

CCCS 旨在缓解生成长序列时探索的复杂度。方法的核心是将非常长的问题序列分解为简短、易于探索的子任务,后者是从训练数据里的规范解决方案中自动构建的。具体来说,考虑一个人类要求 x,我们提供了人类的要求 x 和规范解决方案的前一部分 xp,并训练策略模型以基于 x′= (x, xp) 完成代码。

在优化阶段,用于提供提示的代码段 xp 被遮盖,使其对更新策略模型没有贡献。在训练阶段早期,探索的起点是最终状态附近的状态,随着训练的进行,探索的起点逐渐向规范解决方案的开头移动,在训练的后期,我们方法的探索等价于原始强化学习的探索过程,即不提供 xp,策略模型仅使用人类需求 x 作为输入来生成代码。

CCCS 的洞察之处在于:1)模型很容易从目标附近的状态开始进行探索 ;2)从远离目标的状态开始探索具有挑战性,但当可以利用已经学习过如何达到目标的状态时,就会变得更容易。

细粒度优化(FGO)
 
FGO 旨在提供更精确和有效的优化策略。对于单元测试,编译器的反馈仅与正在执行的代码片段有关,未执行的代码片段应当对最终奖励计算没有贡献。然而,在原始的 RL 优化目标中,轨迹中的所有动作都参与计算策略更新使用的梯度,这是不精确的。为了提高优化的精度,我们在计算策略模型的损失时屏蔽单元测试中未被执行到的代码(token)。

3.3 实验结果

主实验:

这里展示了在我们提出的 APPS+ 上的 pass@1 结果。我们将当前流行且广泛使用的前沿方法与我们的方法进行比较,结果表明 StepCoder 超越了所有Baseline,包括其他基于 RL 的方法。

我们的方法在 “introductory”、“interview” 和 “competition” 三个由易到难的难度级别里中分别达到了 59.7%、23.5% 和 8.6% 的一次通过率。这说明与其他基于 RL 的方法相比,我们的方法更擅长探索输出空间,这是通过将复杂的代码生成任务简化为代码完成子任务实现的。

3.4 Case Study

我们进一步分析了没有通过所有单元测试的样本的结果。结果表明,我们提出的方法可以有效地减少编译错误的可能性,这在 interview 和 competition 这两类更难的问题中尤为明显。虽然 StepCoder 显著减少了编译错误,但在运行时错误方面优势稍稍逊色。因此,未来的研究应该进一步专注于显着减少运行时错误,这可以极大地提高模型生成的代码的质量和通过率。

3.5 结论

StepCoder 是一种全新的通过强化学习增强代码生成的训练范式。该方法解决了代码生成任务中复杂的探索问题面临的多项挑战,将复杂的探索问题进行分解,以降低在奖励稀疏的环境中探索的难度,同时提供了细粒度的优化。实验表明,与其他 RL 方法相比,StepCoder 可以有效地提高生成代码的质量。


更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·
·
·

继续滑动看下一个
PaperWeekly
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存